//
//  LRHomeViewController.swift
//  LRWeibo
//
//  Created by admin on 15/9/21.
//  Copyright © 2015年 懒人. All rights reserved.
//

import UIKit
import SVProgressHUD

private let identifyID = "cell"
class LRHomeViewController: LRBaseTableViewController {

    /// 模型
    private let statusModel = StatusListViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        
        
        if !UserAccountViewModel.sharedUserAccount.isLogin
        {
            // 如果没登陆
            visitorView.setupInfo(nil, message: "关注一些人，回这里看看有什么惊喜")
            return
        }
        
        prepareTableView()
        // 更新数据
        loadData()
    }

    /// 准备表格属性 - 不要在`主方法`中写碎代码 - 提高代码的可读性
    /// 小方法，就放在主方法的下方或者上方
    private func prepareTableView()
    {
        tableView.registerClass(LRStatusCell.self, forCellReuseIdentifier: identifyID)
        tableView.allowsSelection = false
        tableView.estimatedRowHeight = 350
    }
    
    private func loadData()
    {
        // 加载最近数据
        statusModel.loadData { (error) -> () in
            
            if error != nil
            {
                SVProgressHUD.showInfoWithStatus("网速不给力啊")
                return
            }
            self.tableView.reloadData()
        }
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
     // MARK: - tableView 数据源代理方法
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return statusModel.statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(identifyID, forIndexPath: indexPath) as! LRStatusCell
        cell.statusModel = statusModel.statuses[indexPath.row]
        return cell
    }
    
//    1. 数据行数
//    2. 行高 - 计算所有行高
//    3. cell，会再次调用当前行的行高，确认--->疯狂计算->缓存
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        
        let model = statusModel.statuses[indexPath.row]
        
        if model.heightForRow != nil
        {
            return model.heightForRow!
        }
        
        let cell = LRStatusCell(style: .Default, reuseIdentifier: identifyID)
        model.heightForRow = cell.heightForRow(model)
        return model.heightForRow!
    }

}



